<?php

define('FPDF_FONTPATH', 'font/');
require('PDF_MC_Table.php');

class AlunoController extends Controller {

	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout = '//layouts/column2';
	public $caracteristics;

	public $etapas = array();

	public $info;
	public $obs;

	/**
	 * @return array action filters
	 */
	public function filters() {
		return array(
				'accessControl', // perform access control for CRUD operations
				'postOnly + delete', // we only allow deletion via POST request
		);
	}

	public function actions()
	{
		return array(
				
				'veinculacao' => array(
						'class'=>'CViewAction',
						'defaultView' => 'veinculacao',),

				'recomendacao' => array(
						'class' =>'CViewAction',
						'defaultView' => 'recomendacao',),
		
				'rotacao' => array(
						'class' => 'CViewAction',
						'defaultView' => 'rotacao',),
		
				'ficha' => array(
						'class' => 'CViewAction',
						'defaultView' => 'ficha',),
				
				'obito' => array(
						'class' => 'CViewAction',
						'defaultView' => 'obito',),
				
				'revogar' => array(
						'class' => 'CViewAction',
						'defaultView' => 'revogar',),
				
		);
	}

	public function actionRotacao() {

		if (isset($_POST['arv'])) {
			$testvar = $_POST['arv'];

			$this->removeAlunosAtivos();
			$nomes = $this->getNamesFromString($testvar);
			$this->insertAlunosNasTurmas($nomes);
			$this->redirect(array('admin'));
		}

		$this->render('rotacao');
	}

	public function getNamesFromString($string) {
		$rows = explode(',', $string);
		$alunos = array();

		foreach ($rows as $row) {
			$aluno = Aluno::model()->findByAttributes(array('id' => $row));
			if ($aluno != null) {
				$alunos[] = $aluno;
			}
		}

		return $alunos;
	}

	public function removeAlunosAtivos() {
		$ativos = Aluno::model()->findAllByAttributes(array('status'=>'Ativo', 'polo_id'=> Yii::app() -> session['polo_id']));
		if($ativos != null && !empty($ativos)) {
			foreach($ativos as $ativo) {
				$turmasHasAlunos = TurmaHasAluno::model()->findAllByAttributes(array('aluno_id'=>$ativo->id));
				if($turmasHasAlunos != null && !empty($turmasHasAlunos)) {
					foreach($turmasHasAlunos as $turma) {
						$turma->status = 'Em Espera';
						$turma->save();
					}
				}
				$ativo->status = 'Em Espera';
				$ativo->save();
			}
		}
	}

	public function insertAlunosNasTurmas($nomes) {
		$turmas = Turma::model()->findAllByAttributes(array('polo_id'=> Yii::app() -> session['polo_id'], 'ano'=>date('Y')));
		foreach($nomes as $aluno) {
			if($turmas != null && !empty($turmas)) {
				foreach($turmas as $turma) {
					$turmaHasAluno = TurmaHasAluno::model()->findByAttributes(array('aluno_id'=>$aluno->id, 'turma_int'=>$turma->id));
					if($turmaHasAluno == null) {
						$turmaHasAluno = new TurmaHasAluno;
						$turmaHasAluno->turma_int = $turma->id;
						$turmaHasAluno->aluno_id = $aluno->id;
					}
					$turmaHasAluno->status = 'Ativo';
					$turmaHasAluno->save();
				}
			}
			$aluno->status = 'Ativo';
			$aluno->save();
		}

	}

	public static function getAlunosAtivos() {
		return Aluno::model()->findAllByAttributes(array('status'=>'Ativo', 'polo_id'=>Yii::app() -> session['polo_id']));
	}

	public static function getAlunosEmEspera() {
		return Aluno::model()->findAllByAttributes(array('status' => 'Em Espera',  'polo_id'=>Yii::app() -> session['polo_id']));
	}


	public function actionVeinculacao($id) {
		$aluno = AlunoController::loadModel($id);

		if(isset($_POST['submit'])) {
			$this->createAndPrintDocument($aluno);
		}

		$this->render('veinculacao', array(
				'model' => $aluno,
		));
	}

	public function actionRecomendacao($id, $turma = null) {
		
		$aluno = AlunoController::loadModel($id);
		
		if($turma != null) {
			$turmaHasAluno = new TurmaHasAluno;
			$turmaHasAluno->aluno_id = $id;
			$turmaHasAluno->turma_int = $turma;
			$turmaHasAluno->save();
			$aluno->status = "Ativo";
			$aluno->save();
			
			Dialog::Message('Sucesso', "Aluno matriculado com Sucesso!!");
			
			$this->redirect(array('turma/view', 'id' => $turma));
		} 
				
		$this->render('recomendacao',array(
		 'model'=>$aluno,));
	}

	
	public function actionFicha($id) {	
		$this->createAndPrintFichaDocument(AlunoController::loadModel($id));
	}
	
	
	public function actionObito($id) {
		$model = AlunoController::loadModel($id);
		$model->status = Aluno::$status['Óbito'];
		$model->save();
		if($model->turmaHasAlunos != null && !empty($model->turmaHasAlunos)) {
			foreach($model->turmaHasAlunos as $aluno) {
				$aluno->status = Aluno::$status['Óbito'];
				$aluno->save();
			}
		}
		
		$this->redirect(array('view', 'id' => $id));
	}
	
	
	public function actionRevogar($id) {
		$model = AlunoController::loadModel($id);
		$model->status = Aluno::$status['Em espera'];
		$model->save();
		if($model->turmaHasAlunos != null && !empty($model->turmaHasAlunos)) {
			foreach($model->turmaHasAlunos as $aluno) {
				$aluno->status = Aluno::$status['Em espera'];
				$aluno->save();
			}
		}
	
		$this->redirect(array('view', 'id' => $id));
	}
	
	public function createAndPrintDocument($aluno) {

		$pdf = new FPDF('P','mm','A4');
		$pdf->AddPage();
		$pdf->Image('.//css/logo_ufam.jpg',10,7,-150);
		$pdf->Image('.//css/feff.png',182,5,-212);
		$pdf->SetFont('Arial','B',12);
		$pdf->Cell(0,5,'UNIVERSIDADE FEDERAL DO AMAZONAS ',0,1, 'C');
		$pdf->Cell(0,5,utf8_decode('FACULDADE DE EDUCAÇÃO FÍSICA E FISIOTERAPIA'),0,1, 'C');
		$pdf->Cell(0,5,utf8_decode('PROGRAMA DE ATIVIDADES MOTORAS PARA DEFICIENTES - PROAMDE'),0,1,'C');
		$pdf->Ln(10);
			
		$pdf->SetFont('Arial','B',16);
		$pdf->Image('.//css/proamde.png',88,null,-260);
		$pdf->Ln(6);
		$pdf->Cell(0,5,utf8_decode('AUTORIZAÇÃO DE VEICULAÇÃO DE IMAGEM '),0,1,'C');
		$pdf->SetFont('Arial','B',14);
		$responsavel = Aluno::getModuleName();
		$entidade = "ALUNO";
		if( Yii::app() ->session['polo_id'] == 1) {
			$entidade = "PACIENTE";
		}

		if($aluno->responsavel_id) {
			$responsavel = "Responsavel";

			$pdf->Cell(0,5,'('.$entidade.' DEPENDENTE) ',0,1, 'C');
			$pdf->Ln(25);
			$pdf->SetFont('Arial','I',12);
			$pdf->MultiCell(0,5,utf8_decode('Eu '.$aluno->responsavel->nome.' Estado Civil:'.$aluno->responsavel->estado_civil.
					' RG n°: '.$aluno->responsavel->rg.' CPF n°:'.$aluno->responsavel->cpf.
					' Endereço: '.$aluno->pessoa->endereco.' UF:'.$aluno->pessoa->uf.
					' Bairro: '.$aluno->bairro.' Cidade:'.$aluno->pessoa->naturalidade.
					' UF: '.$aluno->pessoa->uf.
					', Autorizo o uso das imagens de meu(minha) filho(a): '.
					$aluno->pessoa->nome.' nas atividades do PROAMDE.'));
		} else {
			$pdf->Cell(0,10,'('.$entidade.' INDEPENDENTE) ',0,1, 'C');
			$pdf->Ln(25);
			$pdf->SetFont('Arial','I',12);
			$pdf->MultiCell(0,5,utf8_decode('Eu '.$aluno->pessoa->nome.' Estado Civil:'.$aluno->estado_civil.
					' RG n°: '.$aluno->pessoa->rg.' CPF n°:'.$aluno->pessoa->cpf.
					' Endereço: '.$aluno->pessoa->endereco.' UF:'.$aluno->pessoa->uf.
					' Bairro: '.$aluno->bairro.' Cidade:'.$aluno->pessoa->naturalidade.
					' UF: '.$aluno->pessoa->uf.
					', Autorizo o uso das minhas imagens nas atividades do PROAMDE.'));
		}
			
		$pdf->Ln(15);
		$pdf->SetFont('Arial','B',14);
		$pdf->Cell(60,5,'PARA TANTO DECLARO QUE: ',0,1);
		$pdf->Ln(10);
		$pdf->SetFont('Arial','I',12);
		$pdf->MultiCell(0,5,utf8_decode('1° Estou ciente que esta AUTORIZAÇÃO transfere ao Programa de Atividades Motoras para Deficientes (PROAMDE)'.
				' todos os direitos de utilização das imagens, com ou sem áudio,  de forma que venha a enriquecer esta produção;'));
		$pdf->MultiCell(0,5,utf8_decode('2° Estou ciente do assunto, bem como sua forma de execução e divulgação, e que esta em nada ferirá a '.
				'Ética, moral ou bons costumes;'));
		$pdf->MultiCell(0,5,utf8_decode('3° Sendo assim, não cobrarei ónus.'));
			
		$dia = date('d');
		$mes = date('F');
		$ano = date('Y');
			
		$mes_num = "";// Dia da semana.
			
		if($mes == "January"){
			$mes_num = "Janeiro";
		}elseif($mes == "February"){
			$mes_num = "Fevereiro";
		}elseif($mes == "March"){
			$mes_num = "Março";
		}elseif($mes == "April"){
			$mes_num = "Abril";
		}elseif($mes == "May"){
			$mes_num = "Maio";
		}elseif($mes == "June"){
			$mes_num = "Junho";
		} elseif($mes == "July") {
			$mes_num = "Julho";
		} elseif($mes == "August"){
			$mes_num = "Agosto";
		} elseif ($mes == "September") {
			$mes_num = "Setembro";
		} elseif ($mes == "October") {
			$mes_num = "Outubro";
		} elseif($mes == "November") {
			$mes_num = "Novembro";
		}else{
			$mes_num = "Dezembro";
		}
			
		$pdf->Ln(20);
		$pdf->Cell(0,5,utf8_decode('Manaus, '.$dia.' de '.$mes_num.' de '. $ano),0,1, 'C');
			
		$pdf->Ln(15);
		$pdf->Cell(0,5,'_______________________________________',0,1, 'C');
		$pdf->SetFont('Arial','B',12);
		$pdf->Cell(0,5,utf8_decode('Assinatura do '.$responsavel),0,1, 'C');
		$pdf->Output('documento_de_veiculacao_de_imagem.pdf');
			
		$path = Yii::app()->request->hostInfo . Yii::app()->request->baseURL . '/documento_de_veiculacao_de_imagem.pdf';
			
			
		return Yii::app()->getRequest()->sendFile('veiculacao_de_imagem_'.$aluno->pessoa->nome.'.pdf', @file_get_contents($path));
			
	}

	public function createAndPrintFichaDocument($aluno) {

		$pdf=new PDF_MC_Table();
		$pdf->Open();
		$pdf->AddPage();
		$pdf->Image('.//css/logo_ufam.jpg',10,7,-150);
		$pdf->Image('.//css/feff.png',182,5,-212);
		$pdf->SetFont('Arial','B',12);
		$pdf->Cell(0,5,'UNIVERSIDADE FEDERAL DO AMAZONAS ',0,1, 'C');
		$pdf->Cell(0,5,utf8_decode('FACULDADE DE EDUCAÇÃO FÍSICA E FISIOTERAPIA'),0,1, 'C');
		$pdf->Cell(0,5,utf8_decode('PROGRAMA DE ATIVIDADES MOTORAS PARA DEFICIENTES - PROAMDE'),0,1,'C');
		$pdf->Ln(10);
		$pdf->SetFont('Arial','B',16);
		$pdf->Image('.//css/proamde.png',88,null,-260);
		$pdf->Ln(6);
		$pdf->Cell(0,5,utf8_decode($aluno->pessoa->nome),0,1,'C');
		$pdf->SetFont('Arial','B',14);
		$responsavel = Aluno::getModuleName();
		$entidade = "ALUNO";
		if( Yii::app() ->session['polo_id'] == 1) {
			$entidade = "ALUNO/PACIENTE";
		}

		$pdf->Cell(0,10,'('.$entidade.' INDEPENDENTE) ',0,1, 'C');
			$pdf->Ln(15);
			
			
			
			$pdf->SetFillColor(224,235,255);
			$pdf->SetTextColor(0);
			$pdf->SetFont('');
			$pdf->SetFont('Arial','',10);
			$pdf->SetWidths(array(92, 53, 40));
			$pdf->Row(array(utf8_decode('Nome: '.$aluno->pessoa->nome),utf8_decode('Estado Civil: '.$aluno->estado_civil),utf8_decode('RG n°: '.$aluno->pessoa->rg)));
			$pdf->SetWidths(array(113, 72));
			$pdf->Row(array(utf8_decode('Email: '.$aluno->pessoa->email),utf8_decode('Data de Nascimento: '.$aluno->pessoa->data_de_nascimento)));
			$pdf->SetWidths(array(50, 63, 72));
			$pdf->Row(array(utf8_decode('CPF n°: '.$aluno->pessoa->cpf),utf8_decode('Cidade: '.$aluno->pessoa->naturalidade),utf8_decode('Bairro: '.$aluno->bairro)));
			$pdf->SetWidths(array(113, 72));
			$pdf->Row(array(utf8_decode('Endereço: '.$aluno->pessoa->endereco),utf8_decode('UF: '.$aluno->pessoa->uf)));
		
		if($aluno->responsavel_id) {
			$pdf->SetWidths(array(92, 52, 41));
			$pdf->Row(array(utf8_decode('Responsavel: '.$aluno->responsavel->nome),utf8_decode('Estado Civil: '.$aluno->responsavel->estado_civil),utf8_decode('CPF N°: '.$aluno->responsavel->cpf)));
		}
			$pdf->SetWidths(array(52, 133));
			$atendente = "";
			$funcionario = Funcionario::model()->findByPk($aluno->atendente_id);
			if($funcionario != null) {
				$atendente = $funcionario->pessoa->nome;
			}
			$pdf->Row(array(utf8_decode('Entrada: '.$aluno->data_entrada),utf8_decode('Atendente: '.$atendente)));
			
		$data = $aluno->alunoHasCaracteristicas;
		$caracteristicas = array();
		if($data != null && !empty($data)) {
		foreach($data as $carac) {
			$caracterist = Caracteristica::model()->findByPk($carac->caracteristica_id);
			$caracteristicas[] =$caracterist;
		}
		}
		$pdf->Ln(8);
		Utils::fancyCaracteristicasTable(Caracteristica::$tipos, $aluno, $caracteristicas, $pdf);
		$pdf->Ln(8);
		
		Utils::fancyTurmasTable($aluno, $pdf);
		
		$pdf->Output('ficha_do_aluno.pdf');
			
		$path = Yii::app()->request->hostInfo . Yii::app()->request->baseURL . '/ficha_do_aluno.pdf';
			
			
		return Yii::app()->getRequest()->sendFile('ficha_do_aluno_'.$aluno->pessoa->nome.'.pdf', @file_get_contents($path));
			
	}
	
	public function criarRecomendaçãoDeTurmas($aluno) {
		
		$turmas = Turma::model()->findAllByAttributes(array('ano'=>date('Y'), 'polo_id'=>Yii::app() -> session['polo_id']));
		if($aluno->status == 'Em Espera') {
		if($turmas != null && !empty($turmas)) {
			foreach ($turmas as $turma) {
			$position = 0;
			if($position < 10) {
				echo "<br/><br/>";
				echo '<div class="row" style="padding:5px; border: 1px solid #dddddd;">';
				echo '<p align="center"><b style="font: normal 14pt Helvetica, sans-serif;">';
				echo CHtml::link($turma->nome.' | '.$turma->classe->nome,Yii::app()->request->baseUrl ."/index.php?r=aluno/recomendacao&id=".$aluno->id.'&turma='.$turma->id);
				echo "</b></p>";
				echo '</div>';
			} else {
				break;
			}
			}
		}  else {
			echo '<br/><br/><p align="center" style="font: normal 14pt Helvetica, sans-serif;"><b>Nenhuma turma cadastrada no Sistema.</b></p>';
		}
		} else  {
			echo '<br/><br/><p align="center" style="font: normal 14pt Helvetica, sans-serif;"><b>Aluno já matriculado em uma Turma</b></p>';
		}
	}
	
	public function hasRecomendations() {
		$result = "";
		if(Yii::app()->session['polo_id'] == 2) {
			$result = "Turmas Recomendadas";
		}
		return $result;
	}

/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules() {
	return array(
			array('allow', // allow all users to perform 'index' and 'view' actions
					'actions' => array('index', 'view', 'veinculacao', 'recomendacao', 'rotacao','ficha', 'obito', 'revogar'),
					'users' => array('@'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
					'actions' => array('create', 'update','admin'),
					'users' => array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
					'actions' => array('delete'),
					'users' => array('@'),
			),
			array('deny', // deny all users
					'users' => array('*'),
			),
	);
}

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id) {
		
	$model = $this->loadModel($id);
		
	$info = array();
	$info = $this->loadCaracteristicas($model->id);
		
	$this->render('view', array(
			'model' => $model,
	));
}



/**
 * Creates a new model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 */
public function actionCreate() {
	$model = new Aluno;
	$pessoa = new Pessoa;
	$responsavel = new Responsavel;

	$temResponsavel = false;

	$this->info = array();
	$this->obs = array();

	$this->performAjaxValidation($model);

	$caracteristica = new Caracteristica('search');
	$caracteristica->unsetAttributes();  // clear any default values
	if (isset($_GET['Caracteristica']))
		$caracteristica->attributes = $_GET['Caracteristica'];

	$this->setCaracteristicasListener();
	if (isset($_POST['Aluno'], $_POST['Pessoa'])) {
		$foto = $model->foto;

		$model->attributes = $_POST['Aluno'];
		$pessoa->attributes = $_POST['Pessoa'];

		if(isset($_POST['checkresponsavel'])) {
			$responsavel->attributes = $_POST['Responsavel'];
			$temResponsavel = true;
			$model->responsavel_id = 1;
		} else {
			$model->responsavel_id = 0;
		}

		$position = 0;
		$valid = $model->validate();
		if($temResponsavel) {
			$valid = $valid && 
			$valid = $valid && $responsavel->validate();
				
		}
		$valid = $pessoa->validate() && $valid;
		$valid = empty($model->pessoa) && $valid;
		if ($valid) {
			$rnd = rand(0,9999);
			$uploadedFile = CUploadedFile::getInstance($model, 'foto');
			$fileName = "{$rnd}{$uploadedFile}";


			$model->foto = $fileName;
			if(!empty($uploadedFile))
			{
				$uploadedFile->saveAs(Yii::app()->basePath.'/../images/'.$model->foto);
			}
			$pessoa->save();
			if($temResponsavel) {
				$responsavel->save();
				$model->responsavel_id = $responsavel->id;
			} else {
				$model->responsavel_id = 0;
			}

			$model->polo_id = Yii::app()->session['polo_id'];
			$model->pessoa_id = $pessoa->id;
			$model->data_entrada = date('d-m-Y');
			$model->save();
			$this->saveCaracteristicas($model->id, $this->info);
			
			Dialog::Message('Sucesso', "Aluno cadastrado com Sucesso!!");
			
			$this->redirect(array('veinculacao', 'id' => $model->id));
		}
	}


	$this->render('create', array(
			'model' => $model,
			'pessoa' => $pessoa,
			'caracteristica' => $caracteristica,
			'responsavel' => $responsavel,
			'info' => $this->info,
			'obs' => $this->obs,
	));
}

/**
 * Updates a particular model.
 * If update is successful, the browser will be redirected to the 'view' page.
 * @param integer $id the ID of the model to be updated
 */
public function actionUpdate($id) {
	$model = $this->loadModel($id);
		
	$this->info = array();
	$this->obs = array();
	$this->loadCaracteristicas($model->id);
		
	$pessoa = $model->pessoa;
	$responsavel = $model->responsavel;
	$temResponsavel = $model->responsavel_id != 0;

	$this->performAjaxValidation($model);
	$caracteristica = new Caracteristica('search');
	$caracteristica->unsetAttributes();  // clear any default values
	if (isset($_GET['Caracteristica']))
		$caracteristica->attributes = $_GET['Caracteristica'];

	$this->setCaracteristicasListener();

	if (isset($_POST['Aluno'], $_POST['Pessoa'])) {

		$_POST['Banner']['foto'] = $model->foto;

		$model->attributes = $_POST['Aluno'];
		$pessoa->attributes = $_POST['Pessoa'];

		if(isset($_POST['checkresponsavel'])) {
			$responsavel->attributes = $_POST['Responsavel'];
			$temResponsavel = true;
			$model->responsavel_id = 1;
		} else {
			$temResponsavel = false;
			$model->responsavel_id = 0;
		}

		$position = 0;
		$valid = $model->validate();
		if($temResponsavel) {
			$valid = $valid && $responsavel->validate();
		}
		$valid = $pessoa->validate() && $valid;
		if ($valid) {
			$rnd = rand(0,9999);
			$uploadedFile = CUploadedFile::getInstance($model, 'foto');

			if(!empty($uploadedFile))
			{
				$uploadedFile->saveAs(Yii::app()->basePath.'/../images/'.$model->foto);
			}


			$pessoa->save(false);
			if($temResponsavel) {
				$responsavel->save();
				$model->responsavel_id = $responsavel->id;
			} else {
				if($responsavel->id != null) {
					$responsavel->delete();
				}

				$model->responsavel_id = 0;
			}

			$historico = new Historico();
			$historico->observacao = Historico::$acoes['Edição'];
			$historico->tipo = Historico::$tipos['Aluno'];
			$historico->data = date('d-m-Y');
			$historico->id_entity = $this->id;
			$historico->save();

			$model->save(false);
			CaracteristicaAluno::model()->deleteAllByAttributes(array('aluno_id'=>$model->id));
			$this->saveCaracteristicas($model->id, $this->info);
			Dialog::Message('Sucesso', "Dados Alterados com Sucesso!!");
			$this->redirect(array('view', 'id' => $model->id));
		}
	}


	$this->render('update', array(
			'model' => $model,
			'pessoa' => $pessoa,
			'caracteristica' => $caracteristica,
			'responsavel' => $responsavel,
			'info' => $this->info,
			'obs' => $this->obs,
	));
}

public function setCaracteristicasListener() {
	$position = 0;
	foreach(Caracteristica::model()->findAll() as $caract) {

		if(isset($_POST['check'.$caract->id])) {
			$checkboxValue = $_POST['check'.$caract->id];
			$this->info[$position] = $checkboxValue;
			$position++;
		}
	}

	foreach(Aluno::$triagem as $key => $value) {
		if(isset($_POST['check'.$key])) {
			$result = $_POST['check'.$key];
			if($result == 'Sim') {
				$this->info[$position] = $key;
				$position++;
			}
		}
		if(isset($_POST['obs'.$key])) {
			$this->obs[$key] = $_POST['obs'.$key];
		}

	}
}

public function loadCaracteristicas($id) {
	$list = CaracteristicaAluno::model()->findAllByAttributes(array('aluno_id'=>$id));
	$position = 0;
	foreach($list as $row) {
		$item = Caracteristica::model()->findByPk($row->caracteristica_id);
		$this->info[$position] = $item->nome;
		if($item->tipo == 'Triagem') {
			$this->obs[$item->nome] = $row->observacao;
		}
		$position ++;
	}
}


public function saveCaracteristicas($aluno_id, $info) {
	if($info != null && !empty($info)) {
		foreach($info as $name) {
			$caracteristicaAluno = new CaracteristicaAluno;
			$caracteristica_id = Caracteristica::model()->findByAttributes(array('nome'=>$name))->id;
			$caracteristicaAluno->aluno_id = $aluno_id;
			$caracteristicaAluno->caracteristica_id = $caracteristica_id;
			if(array_key_exists($name, $this->obs)) {
				$caracteristicaAluno->observacao = $this->obs[$name];
			}
			$caracteristicaAluno->save();
		}
	}

}

/**
 * Deletes a particular model.
 * If deletion is successful, the browser will be redirected to the 'admin' page.
 * @param integer $id the ID of the model to be deleted
 */
public function actionDelete($id) {
	$this->loadModel($id)->deleteData();

	// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
	if (!isset($_GET['ajax']))
		$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}

/**
 * Lists all models.
 */
public function actionIndex() {
	$this->actionAdmin();
}

/**
 * Manages all models.
 */
public function actionAdmin() {
	$model = new Aluno('search');
	$model->unsetAttributes();  // clear any default values
	if (isset($_GET['Aluno']))
		$model->attributes = $_GET['Aluno'];

	$this->render('admin', array(
			'model' => $model,
	));
}

/**
 * Returns the data model based on the primary key given in the GET variable.
 * If the data model is not found, an HTTP exception will be raised.
 * @param integer $id the ID of the model to be loaded
 * @return Aluno the loaded model
 * @throws CHttpException
 */
public static function loadModel($id) {
	$model = Aluno::model()->findByPk($id);
	$model->pessoa = Pessoa::model()->findByPk($model->pessoa_id);
	$model->atendente = Funcionario::model()->findByPk($model->atendente_id);
	$model->responsavel = Responsavel::model()->findByPk($model->responsavel_id);
	if ($model->responsavel == null) {
		$model->responsavel = new Responsavel;
		$model->responsavel_id = 0;
	}
	if ($model === null)
		throw new CHttpException(404, 'Página não encontrada.');
	return $model;
}

/**
 * Performs the AJAX validation.
 * @param Aluno $model the model to be validated
 */
protected function performAjaxValidation($model) {
	if (isset($_POST['ajax']) && $_POST['ajax'] === 'aluno-form') {
		echo CActiveForm::validate($model);
		Yii::app()->end();
	}
}

public function view(array $cols, array $tabledata) {
	//$tabledata will be an array of CActiveRecord objects. $cols is an array of strings from getColumnNames().
	echo "<table><thead><tr>";
	foreach ($cols as $col) {
		echo "<th>$col</th>";
	}
	echo "</tr></thead><tbody>";
	foreach ($tabledata as $data) {
		echo "<tr>";
		foreach ($cols as $col) {
			echo "<td>$data->$col</td>";
		}
		echo "</tr>";
	}
	echo "</tbody></table>";
}

public function actionUpload()
{
	if(isset($_FILES['files']))
	{
		// delete old files
		foreach($this->findFiles() as $filename) {
			unlink(Yii::app()->params['uploadDir'].$filename);
		}


		//upload new files
		foreach($_FILES['files']['name'] as $key=>$filename) {
			move_uploaded_file($_FILES['files']['tmp_name'][$key],Yii::app()->params['uploadDir'].$filename);
		}
	}
	$this->redirect(array('site/widget','view'=>'multifileupload'));
}

/**
 * @return array filename
 */
public function findFiles()
{
	return array_diff(scandir(Yii::app()->params['uploadDir']), array('.', '..'));
}
}
